package mainPackage;

import java.io.FileNotFoundException;
import java.io.FileReader;

import exceptionPackage.LexicalException;
import exceptionPackage.SyntaxException;

import java_cup.runtime.Scanner;

class Main 
{

	public static void main(String arg[]) 
	{
		try
		{
			String nomFichier = "test.jmm" ; //"./test.jmm";
			try
			{
				nomFichier = arg[0];
				if( ! nomFichier.endsWith(".jmm") )
				{
					System.out.println("le fichier "+nomFichier+" n'est pas un fichier .jmm");
				}
			}
			catch(java.lang.ArrayIndexOutOfBoundsException  e){ System.out.println("pas de fichier en entree"); System.exit(2) ; }


			FileReader fr = null ;
			try 
			{
				fr = new FileReader(nomFichier) ;
			}
			catch (FileNotFoundException e){ System.out.println("fichier JMM introuvable "); System.exit(2) ; }

			
			
			try 
			{
				Scanner lex;
				lex = new Lexer(fr);
				parser p = new parser(lex);
				p.parse();
			} 
			catch(LexicalException e){System.out.println("File \""+nomFichier+"\" , "+e.getMessage());System.exit(1) ;}
			catch(SyntaxException e){System.out.println("File \""+nomFichier+"\" , "+e.getMessage());System.exit(1) ;}


			/* Sortie OK  */
			System.out.println("\ncompilation OK");
			System.exit(0);

		}
		catch( Exception exc ) {
			System.err.println("Erreur interne du compilateur");
			exc.printStackTrace() ; 
			System.exit(2);
		}
	}	
}



